package br.furb.view.components;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import br.furb.model.ButtonColumn;
import br.furb.model.PedidoTableModel;
import br.furb.model.negocio.Pedido;
import br.furb.util.Imagem;
import br.furb.util.Observer;
import br.furb.view.CadastroPedido;

public class PedidoPanel extends JPanel implements Observer {

	private JScrollPane scrollPane;
	private JTable table;
	private JPanel panelTitulo;
	private JPanel panelBotoes;
	private JLabel lblTituloMenu;
	private JButton btnAdicionar;
	private CadastroPedido view;
	private JPanel me;
	
	/**
	 * Create the panel.
	 */
	public PedidoPanel(final JFrame owner) {
		setLayout(new BorderLayout(0, 0));
		setVisible(false);
		
		me = this;
		view = new CadastroPedido(owner);
		view.addObserver(this);
		
		scrollPane = new JScrollPane();
		add(scrollPane, BorderLayout.CENTER);
		
		table = new JTable();
		table.setModel(new PedidoTableModel());
		table.getColumnModel().getColumn(table.getColumnModel().getColumnCount() - 1).setMaxWidth(50);
		new ButtonColumn(table, table.getColumnModel().getColumnCount() - 1);
		scrollPane.setViewportView(table);
		
		panelTitulo = new JPanel();
		add(panelTitulo, BorderLayout.NORTH);
		
		lblTituloMenu = new JLabel("Pedidos");
		lblTituloMenu.setFont(new Font("Tahoma", Font.BOLD, 20));
		panelTitulo.add(lblTituloMenu);
		
		panelBotoes = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		add(panelBotoes, BorderLayout.SOUTH);
		
		btnAdicionar = new JButton("Novo");
		btnAdicionar.setIcon(Imagem.icone("add.png"));
		btnAdicionar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				view.setVisible(true, ((PedidoTableModel) table.getModel()).nextId());
			}
		});
		panelBotoes.add(btnAdicionar);
	}

	@Override
	public void update(Object o) {
		((PedidoTableModel) table.getModel()).add((Pedido) o);
	}
	
	public void setPedidos(List<Pedido> p) {
		if (p != null) {
			((PedidoTableModel) table.getModel()).addAll(p);
		}
	}
	
	public List<Pedido> getPedidos() {
		return ((PedidoTableModel) table.getModel()).getItems();
	}
}